package com.example.user.rocketmq;

import com.alibaba.fastjson.JSONObject;
import com.example.bean.Order;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;


/**
 * @Author 刘武贵
 * @Date 2024-03-10 17:23
 * @Description 功能描述：监听消费
 */
/**
 * 用于监听RocketMQ消息的消费者类，特别用于处理订单消息。
 * 使用@Slf4j注解记录日志，@Component注解将其标记为Spring组件，
 * @RocketMQMessageListener注解配置消费者组和订阅的主题。
 */
@Slf4j
@Component
/**
 * 该类是一个RocketMQ消息监听器，用于监听订单主题的消息。
 *
 * RocketConsumeListener类上的@RocketMQMessageListener注解，
 * 表示当前类是一个RocketMQ的消费者，在@RocketMQMessageListener注解中配置了消费者组为user-group，主题为order-topic。
 *
 * @RocketMQMessageListener注解用于配置消费者组和监听的主题。
 *   - consumerGroup: 指定消费者所属的组别，这里为"user-group"。
 *   - topic: 指定监听的主题，这里为"order-topic"。
 */
@RocketMQMessageListener(consumerGroup = "user-group", topic = "order-topic")
public class RocketConsumeListener implements RocketMQListener<Order> {
    /**
     * 当接收到消息时，此方法会被调用。
     * @param order 接收到的订单对象，包含订单的详细信息。
     */
    @Override
    public void onMessage(Order order) {
        // 记录接收到的订单信息
        log.info("用户微服务收到了订单信息：{}", JSONObject.toJSONString(order));
    }
}